/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package olimpus.per;

import olimpus.obj.Personas;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Leonardo
 */
public class PersonasPer
{  
   public static Personas obtenerPersonas(Connection con, String xCiPersona) throws Exception
   {
        Personas objPersonas = new Personas();

        try
        {
            PreparedStatement st=con.prepareStatement("select * " +
                                                       "from PERSONAS "+
                                                         "where CI_PERSONA=? ");
            st.setString(1, xCiPersona);

            ResultSet resultado = st.executeQuery();

            if(resultado.next())
            {
                objPersonas.setCiPersona(resultado.getString("CI_PERSONA"));
                objPersonas.setNombre(resultado.getString("NOMBRE"));
                objPersonas.setApellido(resultado.getString("APELLIDO"));
                objPersonas.setCelular(resultado.getString("CELULAR"));
                objPersonas.setTelefono(resultado.getString("TELEFONO"));
                objPersonas.setDireccion(resultado.getString("DIRECCION"));
                objPersonas.setTipoPersona(resultado.getString("TIPO_PERSONA"));
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return objPersonas;
   }

   public static boolean existePersonas(Connection con, String xCiPersona) throws Exception
   {
        try
        {
            PreparedStatement st=con.prepareStatement("select count(*) as EXISTE " +
                                                      "from PERSONAS " +
                                                         "where CI_PERSONA=? ");

            st.setString(1, xCiPersona);

            ResultSet resultado = st.executeQuery();

            if (resultado.next())
            {
                if (resultado.getInt("EXISTE")==0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return false;
   }

   public static ArrayList<Personas> obtenerColeccionPersonas(Connection con, String xTipoPersona) throws Exception
   {
        ArrayList colPersonas = new ArrayList();

        try
        {
            PreparedStatement st=con.prepareStatement("select * " +
                                                      "from PERSONAS " +
                                                      "where TIPO_PERSONA=?");
            
            st.setString(1, xTipoPersona);

            ResultSet resultado = st.executeQuery();

            while (resultado.next())
            {
                Personas objPersonas = new Personas();

                objPersonas.setCiPersona(resultado.getString("CI_PERSONA"));
                objPersonas.setNombre(resultado.getString("NOMBRE"));
                objPersonas.setApellido(resultado.getString("APELLIDO"));
                objPersonas.setCelular(resultado.getString("CELULAR"));
                objPersonas.setTelefono(resultado.getString("TELEFONO"));
                objPersonas.setDireccion(resultado.getString("DIRECCION"));
                objPersonas.setTipoPersona(resultado.getString("TIPO_PERSONA"));

                colPersonas.add(objPersonas);
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return colPersonas;
    }
   
    public static ArrayList<Personas> busquedaColeccionPersonas(Connection con, String xTipoPersona, String xTextoBuscar) throws Exception
    {
        ArrayList colPersonas = new ArrayList();

        try
        {
            PreparedStatement st=con.prepareStatement("select * " +
                                                      "from PERSONAS where " +
                                                      "(CI_PERSONA like ('%' + ? + '%') or " +
                                                      "NOMBRE like ('%' + ? + '%') or " +
                                                      "APELLIDO like ('%' + ? + '%') or " +
                                                      "CELULAR like ('%' + ? + '%') or " +
                                                      "TELEFONO like ('%' + ? + '%') or " +
                                                      "DIRECCION like ('%' + ? + '%')) and " +
                                                      "TIPO_PERSONA=?");
            st.setString(1, xTextoBuscar);
            st.setString(2, xTextoBuscar);
            st.setString(3, xTextoBuscar);
            st.setString(4, xTextoBuscar);
            st.setString(5, xTextoBuscar);
            st.setString(6, xTextoBuscar);
            st.setString(7, xTipoPersona);

            ResultSet resultado = st.executeQuery();

            while (resultado.next())
            {
                Personas objPersonas = new Personas();

                objPersonas.setCiPersona(resultado.getString("CI_PERSONA"));
                objPersonas.setNombre(resultado.getString("NOMBRE"));
                objPersonas.setApellido(resultado.getString("APELLIDO"));
                objPersonas.setCelular(resultado.getString("CELULAR"));
                objPersonas.setTelefono(resultado.getString("TELEFONO"));
                objPersonas.setDireccion(resultado.getString("DIRECCION"));
                objPersonas.setTipoPersona(resultado.getString("TIPO_PERSONA"));

                colPersonas.add(objPersonas);
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return colPersonas;
    }

    public static void altaPersonas(Connection con, Personas xObjPersonas) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("insert into PERSONAS " +
                                                      "values (?,?,?,?,?,?,?)");

            st.setString(1, xObjPersonas.getCiPersona());
            st.setString(2, xObjPersonas.getNombre());
            st.setString(3, xObjPersonas.getApellido());
            st.setString(4, xObjPersonas.getCelular());
            st.setString(5, xObjPersonas.getTelefono());
            st.setString(6, xObjPersonas.getDireccion());
            st.setString(7, xObjPersonas.getTipoPersona());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }

    public static void bajaPersonas(Connection con, Personas xObjPersonas) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("delete from PERSONAS " +
                                                         "where CI_PERSONA=? ");

            st.setString(1, xObjPersonas.getCiPersona());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }

    public static void modificaPersonas(Connection con, Personas xObjPersonas) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("update PERSONAS " +
                                                      "set NOMBRE=?, "+
                                                      "APELLIDO=?, "+
                                                      "CELULAR=?, "+
                                                      "TELEFONO=?, "+
                                                      "DIRECCION=?, "+
                                                      "TIPO_PERSONA=? "+
                                                         "where CI_PERSONA=? ");

            st.setString(1, xObjPersonas.getNombre());
            st.setString(2, xObjPersonas.getApellido());
            st.setString(3, xObjPersonas.getCelular());
            st.setString(4, xObjPersonas.getTelefono());
            st.setString(5, xObjPersonas.getDireccion());
            st.setString(6, xObjPersonas.getTipoPersona());
            st.setString(7, xObjPersonas.getCiPersona());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }
}
